#!/bin/sh

HCIATTACH=/usr/bin/hciattach
if grep -q "Pi 4" /proc/device-tree/model; then
  BDADDR=
else
  SERIAL=$(cat /proc/device-tree/serial-number | cut -c9-)
  B1=${SERIAL:2:2}
  B2=${SERIAL:4:2}
  B3=${SERIAL:6:2}
  BDADDR=$(printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa)))
fi

uart0="$(cat /proc/device-tree/aliases/uart0)"
serial1="$(cat /proc/device-tree/aliases/serial1)"

if [ "$uart0" = "$serial1" ] ; then
  uart0_pins="$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' ')"
  if [ "$uart0_pins" = "16" ] ; then
    $HCIATTACH /dev/serial1 bcm43xx 3000000 flow - $BDADDR
  else
    $HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR
  fi
else
  $HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR
fi
